package com.ruoyi.system.domain.wrapper.query;

import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.system.domain.dao.SysUser;
import com.ruoyi.system.domain.query.SysUserQo;

/**
 * 用户信息查询条件包装
 *
 * @author 尹国春
 * @date 2022-07-19
 */
public class SysUserWrapperQ {

    public static LambdaQueryWrapper<SysUser> getQueryWrapper(SysUserQo entity){
        LambdaQueryWrapper<SysUser> wrapper= getQueryWrapper((SysUser)entity);
        if(entity.getBeginTime()!=null){
            wrapper.ge(SysUser::getCreateTime,entity.getBeginTime());
        }
        if(entity.getEndTime()!=null){
            wrapper.lt(SysUser::getCreateTime, DateUtil.endOfDay(entity.getEndTime()));
        }
        if(entity.getRoleId()!=null && entity.getRoleId().trim().length()>0){
            String sql= "select * from sys_user_role b where b.user_id=sys_user.user_id and b.role_id={0}";
            wrapper.exists(sql,entity.getRoleId());
        }
        if(entity.getUnRoleId()!=null && entity.getUnRoleId().trim().length()>0){
            String sql= "select * from sys_user_role b where b.user_id=sys_user.user_id and b.role_id={0}";
            wrapper.notExists(sql,entity.getUnRoleId());
        }
        return wrapper;
    }

    public static LambdaQueryWrapper<SysUser> getQueryWrapper(SysUser entity){
        LambdaQueryWrapper<SysUser> wrapper= Wrappers.<SysUser>lambdaQuery();
        if(entity.getUserId()!=null){
            wrapper.eq(SysUser::getUserId,entity.getUserId());
        }
        if(entity.getDeptId()!=null && entity.getDeptId().trim().length()>0){
            wrapper.eq(SysUser::getDeptId,entity.getDeptId());
        }
        if(entity.getUserName()!=null && entity.getUserName().trim().length()>0){
            wrapper.eq(SysUser::getUserName,entity.getUserName());
        }
        if(entity.getNickName()!=null && entity.getNickName().trim().length()>0){
            wrapper.eq(SysUser::getNickName,entity.getNickName());
        }
        if(entity.getUserType()!=null && entity.getUserType().trim().length()>0){
            wrapper.eq(SysUser::getUserType,entity.getUserType());
        }
        if(entity.getEmail()!=null && entity.getEmail().trim().length()>0){
            wrapper.eq(SysUser::getEmail,entity.getEmail());
        }
        if(entity.getPhonenumber()!=null && entity.getPhonenumber().trim().length()>0){
            wrapper.eq(SysUser::getPhonenumber,entity.getPhonenumber());
        }
        if(entity.getSex()!=null && entity.getSex().trim().length()>0){
            wrapper.eq(SysUser::getSex,entity.getSex());
        }
        if(entity.getAvatar()!=null && entity.getAvatar().trim().length()>0){
            wrapper.eq(SysUser::getAvatar,entity.getAvatar());
        }
        if(entity.getStatus()!=null && entity.getStatus().trim().length()>0){
            wrapper.eq(SysUser::getStatus,entity.getStatus());
        }
        if(entity.getDelFlag()!=null && entity.getDelFlag().trim().length()>0){
            wrapper.eq(SysUser::getDelFlag,entity.getDelFlag());
        }
        if(entity.getCreateBy()!=null && entity.getCreateBy().trim().length()>0){
            wrapper.eq(SysUser::getCreateBy,entity.getCreateBy());
        }
//        if(entity.getCreateTime()!=null){
//            wrapper.eq(SysUser::getCreateTime,entity.getCreateTime());
//        }
        if(entity.getUpdateBy()!=null && entity.getUpdateBy().trim().length()>0){
            wrapper.eq(SysUser::getUpdateBy,entity.getUpdateBy());
        }
        if(entity.getUpdateTime()!=null){
            wrapper.eq(SysUser::getUpdateTime,entity.getUpdateTime());
        }
        if(entity.getRemark()!=null && entity.getRemark().trim().length()>0){
            wrapper.eq(SysUser::getRemark,entity.getRemark());
        }
        return wrapper;
    }
}